// components/lyric/lyric.js
let lyricHeight = 0
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    isLyricShow:{
      type:Boolean,
      value:false
    },
    lyric:String
  },

  observers:{
    lyric(lrc){
      if (lrc == '暂无歌词') {
        this.setData({
          lrcList: [{
            lrc,
            time: 0,
          }],
          nowLyricIndex: -1
        })
      } else {
        this._parseLyric(lrc)
      }
    }
    
  },

  /**
   * 组件的初始数据
   */
  data: {
    lrcList:[],
    nowLyricIndex:0,
    scrollTop:0
  },

  lifetimes:{
    ready(){
      wx.getSystemInfo({
        success: (res) => {
          lyricHeight = res.screenWidth / 750 * 64
        },
      })
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    updata(currentTime){
      console.log(currentTime);
      let lrcList = this.data.lrcList
      console.log(lrcList);
      if(lrcList.length === 0){
        return
      }
      if(currentTime > lrcList[lrcList.length - 1].time){
        if(this.data.nowLyricIndex != -1){
          this.setData({
            nowLyricIndex:-1,
            scrollTop:lrcList.length * lyricHeight
          })
        }
      }
      for(let i = 0;i < lrcList.length;i++){
        if(currentTime <= lrcList[i].time){
          this.setData({
            nowLyricIndex:i-1,
            scrollTop:( i - 1 ) * lyricHeight
          })
          break
        }
      }
    },
    // 解析歌词
    _parseLyric(sLyric){
      let line = sLyric.split('\n')
      let _lrcList = []
      // console.log(line);
      line.forEach(element => {
        let time = element.match(/\[(\d{2,}):(\d{2})(?:\.(\d{2,3}))?]/g)
        
        if(time != null){
          // console.log(time);
          let lrc = element.split(time)[1]
          // console.log(lrc);
          let timeReg = time[0].match(/(\d{2,}):(\d{2})(?:\.(\d{2,3}))?/)
          // console.log(timeReg);
          // 将时间转化成秒
          let time2Second = parseInt(timeReg[1]) * 60 + parseInt(timeReg[2]) + parseInt(timeReg[3]) / 1000
          // console.log(time2Second);
          _lrcList.push({
            lrc,
            time:time2Second
          })
        }
      });
      this.setData({
        lrcList:_lrcList
      })
      // console.log(_lrcList);
    }
  }
})
